package org.yray.sip.creator;



import org.yray.sip.base.MsgEle;
import org.yray.sip.server.SipSession;

import java.util.Optional;


public class OK200Creator extends MessageCreator {
    /***
     * Via: SIP/2.0/UDP 172.168.200.78;rport=5060;received=172.168.200.78;branch=z9hG4bK7XKa4g1gmUNjB
     Call-ID: 537ed180-96e6-123a-ec8c-0050568cd49a
     From: <sip:78004@172.168.200.78>;tag=DHB1B9Fv879aQ
     To: <sip:78004@172.168.200.78>;tag=z9hG4bK7XKa4g1gmUNjB
     CSeq: 41638043 NOTIFY
     Content-Length:  0
     * @param session
     * @return
     */
    @Override
    public String createMsg(SipSession session){
        StringBuilder sb = new StringBuilder();
        sb.append("SIP/2.0 200 OK").append(MsgEle.LINE_SEPARATOR);
        Optional.ofNullable(session.getSipMap()).ifPresent(
                map->{
                    Optional.ofNullable(session.getSipMap().get(MsgEle.VIA)).ifPresent(v->{
                        sb.append(MsgEle.VIA+": ").append(v).append(MsgEle.LINE_SEPARATOR);
                    });
                    Optional.ofNullable(session.getSipMap().get(MsgEle.CALL_ID)).ifPresent(v->{
                        sb.append(MsgEle.CALL_ID+": ").append(v).append(MsgEle.LINE_SEPARATOR);
                    });
                    Optional.ofNullable(session.getSipMap().get(MsgEle.FROM)).ifPresent(v->{
                        sb.append(MsgEle.FROM+": ").append(v).append(MsgEle.LINE_SEPARATOR);
                    });
                    Optional.ofNullable(session.getSipMap().get(MsgEle.TO)).ifPresent(v->{
                        sb.append(MsgEle.TO+": ").append(v).append(MsgEle.LINE_SEPARATOR);
                    });
                    Optional.ofNullable(session.getSipMap().get(MsgEle.CSEQ)).ifPresent(v->{
                        sb.append(MsgEle.CSEQ+": ").append(v).append(MsgEle.LINE_SEPARATOR);
                    });
                    Optional.ofNullable(session.getSipMap().get(MsgEle.USER_AGENT)).ifPresent(v->{
                        sb.append(MsgEle.USER_AGENT+": ").append(v).append(MsgEle.LINE_SEPARATOR);
                    });
                    Optional.ofNullable(session.getSipMap().get(MsgEle.ALLOW)).ifPresent(v->{
                        sb.append(MsgEle.ALLOW+": ").append(v).append(MsgEle.LINE_SEPARATOR);
                    });
                    Optional.ofNullable(session.getSipMap().get(MsgEle.CONTENT_LENGTH)).ifPresent(v->{
                        sb.append(MsgEle.CONTENT_LENGTH+": ").append(v).append(MsgEle.LINE_SEPARATOR);
                    });
                }
        );
        return sb.toString();
    }


}
